package com.cdks.wuxiu.entity.mongodb;

import lombok.Data;

import java.util.List;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import org.springframework.data.mongodb.core.mapping.FieldType;


/**
 * 心理测试答案表
 */
@Data
@Document(collection = "quiz_answer_info")  //指定要对应的文档名(表名）
public class QuizAnswerInfo {

    /*** 自定义mongo主键 加此注解可自定义主键类型以及自定义自增规则
     *  若不加 插入数据数会默认生成 ObjectId 类型的_id 字段
     *  org.springframework.data.annotation.Id 包下
     *  mongo库主键字段还是为_id (本文实体类中字段为为id，意思查询字段为_id，但查询结果_id会映射到实体对象id字段中）
     */
    /**
     * 自增主键
     */
    @Id
    private String id;

    /**
     * 主题id
     */
    @Field(name = "topicId", targetType = FieldType.INT64)
    private Long topicId;

    /**
     * 测试结果说明
     */
    @Field(name = "remark", targetType = FieldType.STRING)
    private String remark;

    /**
     * 答案列表
     */
    @Field(name = "answer", targetType = FieldType.ARRAY)
    private List<Answer> answer;

    @Data
    public class Answer {
        /**
         * 标题
         */
        @Field(name = "title" , targetType = FieldType.STRING)
        private String title;  

        /**
         * 分数
         */
        @Field(name = "score" , targetType = FieldType.ARRAY)
        private Score score;

        /**
         * 答案描述
         */
        @Field(name = "content" , targetType = FieldType.STRING)
        private String content;
    } 

    @Data
    public class Score {
        /**
         * 最小分数
         */
        @Field(name = "min" , targetType = FieldType.INT32)
        private Integer min;  

        /**
         * 最大分数
         */
        @Field(name = "max" , targetType = FieldType.INT32)
        private Integer max;
    }
}
